package member.api;

import member.model.core.CoreCompany;

import java.util.List;

/**
 * Created by ChenGeng on 2016/10/28.
 * 组织机构相关Api
 */

public interface CoreCompanyApi {

    public String toString();

    /**
     * 根据coreCompanyId取CoreCompany信息
     * @param coreCompanyId
     */
    public CoreCompany getCoreCompanyInfoById(String coreCompanyId);

    /**
     * 创建组织和修改组织
     * @param coreCompany
     */
    public void saveCompany(CoreCompany coreCompany);

    /**
     * 取组织信息
     * @param coreCompanyId
     * @return
     */
    public CoreCompany getCompanyInfo(String  coreCompanyId);

    /**
     * 取组织集合
     * @param
     * @return
     */
    public List<CoreCompany> findAllByParent_idIsNotNull();

    /**
     * 查询所有组织
     * @return
     */
    public List<CoreCompany> findAllCompany();

    /**
     * 取组织集合
     * @param isDelete
     * @return
     */
    public List<CoreCompany> findByIsDelete(boolean isDelete);

    /**
     * 删除组织
     * @param id
     */
    public void deleteDataById(String id);

    /**
     * 获取子组织集合
     * @param isDelete
     * @return
     */
    public List<CoreCompany> findAllByParent_idIsNotNullAndIsDelete(boolean isDelete);

    /**
     * 获取某个父节点下的所有孩子节点
     * @param parent_id
     * @param isDelete
     * @return
     */
    public List<CoreCompany> findAllByParent_idAndIsDelete(String parent_id, boolean isDelete);

    /**
     * 根据公司层级查询公司id
     * @param level
     * @return
     */
    public List<String> findCompanyIdsByCompanyLevel(Integer level);

    /**
     * 获取所有根节点
     * @param isDelete
     * @return
     */
    public List<CoreCompany> findAllByParent_idIsNullAndIsDelete(boolean isDelete);
}
